LAMMPS (9 Oct 2020)
  using 1 OpenMP thread(s) per MPI task
####################################################################################################
#
# ULSPH example: water flow through a complex geometry read from a .STL file
#
# The boundary dump file (see below) can be converted into VTK format using the conversion
# tool dump2vtk_tris from the tools/smd directory.
#
# unit system: GPa / mm / ms
#
####################################################################################################

####################################################################################################
# MATERIAL PARAMETERS
####################################################################################################
variable        c0 equal 10.0 # speed of sound for fluid
variable        rho equal 1.0e-6 # initial mass density
variable        q1 equal 0.06 # standard artificial viscosity linear coefficient
variable        q2 equal 0.0  # standard artificial viscosity quadratic coefficient
variable        hg equal 0.0 # hourglass control coefficient
variable        cp equal 1.0 # heat capacity of material -- not used here
variable        K equal ${c0}*${rho}^2
variable        K equal 10*${rho}^2
variable        K equal 10*1e-06^2
variable        contact_stiffness equal 0.1*${K}
variable        contact_stiffness equal 0.1*1e-11

####################################################################################################
# INITIALIZE LAMMPS
####################################################################################################
dimension       3
units           si
boundary        f f f # simulation box boundaries
atom_style      smd
atom_modify	map array
comm_modify     vel yes
comm_style      tiled
neigh_modify    every 10 delay 0 check yes exclude type 2 2 one 10000
newton          off

####################################################################################################
# CREATE INITIAL GEOMETRY
####################################################################################################
variable        l0 equal 5.0 # lattice spacing for creating particles
lattice         sc ${l0}
lattice         sc 5
Lattice spacing in x,y,z = 5.0000000 5.0000000 5.0000000
region          box block -110 60 -30 220 -90 130 units box
create_box      2 box
Created orthogonal box = (-110.00000 -30.000000 -90.000000) to (60.000000 220.00000 130.00000)
  1 by 1 by 1 MPI processor grid
region          particles cylinder y 0 -30 47 135 200 units box
create_atoms    1 region particles
Created 3878 atoms
  create_atoms CPU = 0.001 seconds
group           water type 1
3878 atoms in group water

####################################################################################################
# DISCRETIZATION PARAMETERS
####################################################################################################
variable        h equal 2.01*${l0} # SPH smoothing kernel radius
variable        h equal 2.01*5 
variable        vol_one equal ${l0}^3 # volume of one particle -- assuming unit thickness
variable        vol_one equal 5^3 
variable        skin equal 0.1*${h} # Verlet list range
variable        skin equal 0.1*10.05 
neighbor        ${skin} bin
neighbor        1.005 bin
variable        cr equal ${l0}/2
variable        cr equal 5/2
set             group all smd/contact/radius ${cr}
set             group all smd/contact/radius 2.5
Setting atom values ...
  3878 settings made for smd/contact/radius
set             group all volume ${vol_one}
set             group all volume 125
Setting atom values ...
  3878 settings made for volume
set             group all smd/mass/density ${rho}
set             group all smd/mass/density 1e-06
Setting atom values ...
  3878 settings made for smd/mass/density
set             group all diameter ${h} # set SPH kernel radius
set             group all diameter 10.05 
Setting atom values ...
  3878 settings made for diameter

####################################################################################################
# DEFINE GRAVITY BOUNDARY CONDITION
####################################################################################################
fix             gfix all gravity 0.01 vector 0.0 -1. 0.0

####################################################################################################
# INTERACTION PHYSICS / MATERIAL MODEL
# We use polynomial EOS for the pressure and the Johnson Cook strength model
# An integration point fails (cannot support tension anymore) if the plastic strain exceeds 0.5.
####################################################################################################
pair_style      hybrid/overlay smd/tri_surface 1.0                 smd/ulsph *DENSITY_CONTINUITY *VELOCITY_GRADIENT *NO_GRADIENT_CORRECTION
pair_coeff      1 1 smd/ulsph *COMMON ${rho} ${c0} ${q1} ${cp} ${hg}                 *EOS_TAIT 2                 *END
pair_coeff      1 1 smd/ulsph *COMMON 1e-06 ${c0} ${q1} ${cp} ${hg}                 *EOS_TAIT 2                 *END
pair_coeff      1 1 smd/ulsph *COMMON 1e-06 10 ${q1} ${cp} ${hg}                 *EOS_TAIT 2                 *END
pair_coeff      1 1 smd/ulsph *COMMON 1e-06 10 0.06 ${cp} ${hg}                 *EOS_TAIT 2                 *END
pair_coeff      1 1 smd/ulsph *COMMON 1e-06 10 0.06 1 ${hg}                 *EOS_TAIT 2                 *END
pair_coeff      1 1 smd/ulsph *COMMON 1e-06 10 0.06 1 0                 *EOS_TAIT 2                 *END
pair_coeff      2 2 none
pair_coeff      1 2 smd/tri_surface ${contact_stiffness}
pair_coeff      1 2 smd/tri_surface 1e-12

####################################################################################################
# LOAD STL SURFACE
####################################################################################################
fix             stl_surface_fix all smd/wall_surface boundary.stl 2 65535
run             0 # This is important! Always run for 0 timesteps directly after loading STL file!
Neighbor list info ...
  update every 10 steps, delay 0 steps, check yes
  max neighbors/atom: 10000, page size: 100000
  master list distance cutoff = 11.055
  ghost atom cutoff = 11.055
  binsize = 5.5275, bins = 31 46 40
  3 neighbor lists, perpetual/occasional/extra = 3 0 0
  (1) pair smd/tri_surface, perpetual, skip from (3)
      attributes: half, newton off, size
      pair build: skip/half/size
      stencil: none
      bin: none
  (2) pair smd/ulsph, perpetual, skip from (3)
      attributes: half, newton off, size
      pair build: skip/half/size
      stencil: none
      bin: none
  (3) neighbor class addition, perpetual
      attributes: half, newton off, size
      pair build: half/size/bin/newtoff
      stencil: half/bin/3d/newtoff
      bin: standard
  scanning triangle pairs ...
... fix smd/wall_surface finished reading triangulated surface
fix smd/wall_surface created 9472 atoms
>>========>>========>>========>>========>>========>>========>>========>>========
Per MPI rank memory allocation (min/avg/max) = 10.41 | 10.41 | 10.41 Mbytes
Step Temp E_pair E_mol TotEng Press 
       0            0            0            0            0            0 
Loop time of 1.19209e-06 on 1 procs for 0 steps with 13350 atoms

251.7% CPU use with 1 MPI tasks x 1 OpenMP threads

MPI task timing breakdown:
Section |  min time  |  avg time  |  max time  |%varavg| %total
---------------------------------------------------------------
Pair    | 0          | 0          | 0          |   0.0 |  0.00
Neigh   | 0          | 0          | 0          |   0.0 |  0.00
Comm    | 0          | 0          | 0          |   0.0 |  0.00
Output  | 0          | 0          | 0          |   0.0 |  0.00
Modify  | 0          | 0          | 0          |   0.0 |  0.00
Other   |            | 1.192e-06  |            |       |100.00

Nlocal:        13350.0 ave       13350 max       13350 min
Histogram: 1 0 0 0 0 0 0 0 0 0
Nghost:        0.00000 ave           0 max           0 min
Histogram: 1 0 0 0 0 0 0 0 0 0
Neighs:        0.00000 ave           0 max           0 min
Histogram: 1 0 0 0 0 0 0 0 0 0

Total # of neighbors = 0
Ave neighs/atom = 0.0000000
Neighbor list builds = 0
Dangerous builds = 0
group           surface type 2
9472 atoms in group surface

####################################################################################################
# TIME INTEGRATION
####################################################################################################
fix             force_fix surface setforce 0 0 0
fix             dtfix all smd/adjust_dt 0.1 # dynamically adjust time increment every step
fix             integration_fix all smd/integrate_ulsph adjust_radius 1.01 10 15

####################################################################################################
# SPECIFY TRAJECTORY OUTPUT
####################################################################################################
variable        dumpFreq equal 100
compute         rho all smd/rho
compute         nn all smd/ulsph/num/neighs # number of neighbors for each particle
compute         contact_radius all smd/contact/radius
compute         surface_coords surface smd/triangle/vertices


dump            dump_id water custom ${dumpFreq} dump.LAMMPS id type x y z vx vy vz                 c_rho c_nn c_contact_radius proc
dump            dump_id water custom 100 dump.LAMMPS id type x y z vx vy vz                 c_rho c_nn c_contact_radius proc
dump_modify     dump_id first yes

dump            surf_dump surface custom 999999999 surface.LAMMPS id type mol x y z                    c_surface_coords[1] c_surface_coords[2] c_surface_coords[3]                            c_surface_coords[4] c_surface_coords[5] c_surface_coords[6]                            c_surface_coords[7] c_surface_coords[8] c_surface_coords[9]
dump_modify 	surf_dump first yes

####################################################################################################
# STATUS OUTPUT
####################################################################################################
compute         eint all smd/internal/energy
compute         alleint all reduce sum c_eint
variable        etot equal pe+ke+c_alleint+f_gfix # total energy of the system
thermo          100
thermo_style    custom step dt f_dtfix pe ke v_etot

####################################################################################################
# RUN SIMULATION
####################################################################################################
balance          1.1 rcb
Balancing ...
Neighbor list info ...
  update every 10 steps, delay 0 steps, check yes
  max neighbors/atom: 10000, page size: 100000
  master list distance cutoff = 11.055
  ghost atom cutoff = 11.055
  binsize = 5.5275, bins = 31 46 40
  3 neighbor lists, perpetual/occasional/extra = 3 0 0
  (1) pair smd/tri_surface, perpetual, skip from (3)
      attributes: half, newton off, size
      pair build: skip/half/size
      stencil: none
      bin: none
  (2) pair smd/ulsph, perpetual, skip from (3)
      attributes: half, newton off, size
      pair build: skip/half/size
      stencil: none
      bin: none
  (3) neighbor class addition, perpetual
      attributes: half, newton off, size
      pair build: half/size/bin/newtoff
      stencil: half/bin/3d/newtoff
      bin: standard
fix              balance_fix all balance 200 1.1 rcb
run              5000
Neighbor list info ...
  update every 10 steps, delay 0 steps, check yes
  max neighbors/atom: 10000, page size: 100000
  master list distance cutoff = 11.055
  ghost atom cutoff = 11.055
  binsize = 5.5275, bins = 31 46 40
  3 neighbor lists, perpetual/occasional/extra = 3 0 0
  (1) pair smd/tri_surface, perpetual, skip from (3)
      attributes: half, newton off, size
      pair build: skip/half/size
      stencil: none
      bin: none
  (2) pair smd/ulsph, perpetual, skip from (3)
      attributes: half, newton off, size
      pair build: skip/half/size
      stencil: none
      bin: none
  (3) neighbor class addition, perpetual
      attributes: half, newton off, size
      pair build: half/size/bin/newtoff
      stencil: half/bin/3d/newtoff
      bin: standard
Per MPI rank memory allocation (min/avg/max) = 16.94 | 16.94 | 16.94 Mbytes
Step Dt f_dtfix PotEng KinEng v_etot 
       0        1e-16            0            0            0    7373.6969 
     100  0.070241957    7.4813056            0 0.0013565713    7373.6969 
     200  0.070241957    14.505501            0 0.0050998019    7373.6969 
     300  0.070241957    21.529697            0  0.011234756    7373.6969 
     400  0.070241957    28.553893            0  0.019761435    7373.6969 
     500  0.068651004    35.521974 2.9536075e-17  0.030501647    7373.6969 
     600  0.063567733    42.018915 1.5012312e-20  0.042319821    7373.6969 
     700   0.06328517    48.362291 4.2726605e-17  0.054476749    7373.6969 
     800  0.062612972    54.677804 2.9574077e-16  0.061321338    7373.6964 
     900  0.061046594    60.843808 2.4764809e-15  0.059143351    7373.6941 
    1000  0.060891431     66.91066 9.0780396e-16  0.051813676    7373.6909 
    1100  0.060874371    72.951879 1.5743441e-15  0.044736442    7373.6887 
    1200  0.061243012    79.052117 1.3268705e-16  0.038992873    7373.6875 
    1300   0.06125516    85.174023 4.803371e-17  0.036387177    7373.6872 
    1400  0.061802711    91.329247 3.9865332e-17  0.034853455    7373.6871 
    1500  0.061687292     97.49874 6.2876669e-17  0.034362699    7373.6871 
    1600  0.061476202    103.60196 1.0306933e-16  0.034747965    7373.6871 
    1700  0.060566669     109.7162 7.8436106e-17  0.035644692     7373.687 
    1800  0.061646486    115.87735 2.9003723e-17   0.03607698    7373.6867 
    1900  0.061299326    122.03236 1.7843781e-16   0.03653221    7373.6863 
    2000  0.061774936    128.17277 7.8851844e-17  0.036748903    7373.6859 
    2100  0.061852608     134.3374 3.4689543e-17  0.036970808    7373.6855 
    2200  0.061820375    140.50665 4.9453837e-17  0.037549449    7373.6852 
    2300   0.06084664    146.66596 1.0442793e-17  0.038461012     7373.685 
    2400  0.061370143    152.82413 2.5065434e-17  0.039575266    7373.6848 
    2500  0.061892113    158.99977 2.5338703e-17   0.04067509    7373.6845 
    2600  0.061876574    165.18168 2.6500242e-17  0.041556692    7373.6842 
    2700  0.061813006    171.32911 9.8478324e-17   0.04246145    7373.6839 
    2800  0.061457255    177.47316 6.827231e-17  0.043444855    7373.6837 
    2900  0.061925739    183.61894 7.9179167e-16  0.044560297    7373.6835 
    3000  0.061893083    189.78619 1.6443425e-16  0.045653853    7373.6832 
    3100  0.061462631    195.93892 1.6994763e-17  0.046918113     7373.683 
    3200  0.061370761    202.09427 5.8002308e-17  0.047943876    7373.6827 
    3300  0.061736844    208.25229 1.6923966e-17  0.049274334    7373.6824 
    3400  0.061854818    214.40475 1.4362026e-17  0.050293079    7373.6821 
    3500  0.061104996     220.5707 9.6219144e-18  0.051499671    7373.6819 
    3600  0.061725483    226.74238 4.6985917e-17  0.052788247    7373.6816 
    3700  0.061415526    232.89307 8.9255744e-17  0.054165669    7373.6814 
    3800  0.061749225    239.04031 1.2661727e-16  0.055407691    7373.6812 
    3900  0.061566598    245.20678 9.7555398e-18  0.056554105    7373.6809 
    4000  0.061522412    251.36073 3.612872e-17  0.057775565    7373.6807 
    4100  0.061519755    257.49877 3.6475184e-17  0.059026603    7373.6805 
    4200  0.061617099    263.65144 1.8654744e-16  0.060402607    7373.6803 
    4300  0.061765314    269.79662 1.3742267e-16   0.06198524    7373.6801 
    4400  0.060964776    275.94941 5.6067161e-17  0.063217622    7373.6799 
    4500  0.061692851    282.10139 4.2434485e-17  0.064775345    7373.6797 
    4600  0.061575778    288.25001 6.9753486e-17  0.066331185    7373.6796 
    4700  0.061415078    294.38918 2.2377578e-17   0.06793909    7373.6794 
    4800  0.061801946     300.5394 1.5457224e-17  0.069523222    7373.6792 
    4900  0.061468033    306.68667 4.3328468e-17  0.071106234    7373.6791 
    5000  0.061718584    312.83399 2.6787461e-17  0.072510135    7373.6789 
Loop time of 33.9352 on 1 procs for 5000 steps with 13350 atoms

99.3% CPU use with 1 MPI tasks x 1 OpenMP threads

MPI task timing breakdown:
Section |  min time  |  avg time  |  max time  |%varavg| %total
---------------------------------------------------------------
Pair    | 25.103     | 25.103     | 25.103     |   0.0 | 73.97
Neigh   | 6.4624     | 6.4624     | 6.4624     |   0.0 | 19.04
Comm    | 0.038788   | 0.038788   | 0.038788   |   0.0 |  0.11
Output  | 0.57804    | 0.57804    | 0.57804    |   0.0 |  1.70
Modify  | 1.6405     | 1.6405     | 1.6405     |   0.0 |  4.83
Other   |            | 0.1125     |            |       |  0.33

Nlocal:        13350.0 ave       13350 max       13350 min
Histogram: 1 0 0 0 0 0 0 0 0 0
Nghost:        0.00000 ave           0 max           0 min
Histogram: 1 0 0 0 0 0 0 0 0 0
Neighs:       195088.0 ave      195088 max      195088 min
Histogram: 1 0 0 0 0 0 0 0 0 0

Total # of neighbors = 195088
Ave neighs/atom = 14.613333
Neighbor list builds = 455
Dangerous builds = 414
Total wall time: 0:00:34
